<?php
class EventosController extends AppController {
	var $name = 'Eventos';
	var $uses = array("Evento","Ponente","Exposicion","Separacion","Ambiente","Solicitante","Asistencia");

	function listar(){
		$this->verificarUsuario();
		$eventos = $this->Evento->find('all');
		$this->set('eventos',$eventos);
		$this->set('menu','evento');
		$usuario = $this->Session->read('Usuario');
		$id_solicitante=0;
			if($this->Session->check('Usuario'))
			{
				if($usuario['perfil'] == 1 || $usuario['perfil'] == 3|| $usuario['perfil'] == 2)	
				{
					$sol = $this->Solicitante->findByUsuariosId($usuario['id']);
					if(count($sol)<1){		
				$id_solicitante=0;				
					}
					else
					$id_solicitante=$sol['Solicitante']['id'];
				}	
				else{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Usuarios','action'=>'listar'),null,true);	
				}
			}	
		$this->set('id_solicitante',$id_solicitante);

		if(!empty($this->data)){

	 		$dataEvento = $this->data;
			if($dataEvento["Evento"]["solicitantes_id"]==0)
			{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);			
			}	
			$evento = $this->Evento->create();

			if($this->Evento->save($dataEvento["Evento"])){				
				$this->Session->setFlash('Se agregó el evento con éxito','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
			}
		}
	}





	function verparticipantes(){
		$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		}
		$asistencias = $this->Asistencia->find('all',array("conditions"=>array("eventos_id"=>$id)));
		$this->set('asistencias',$asistencias);
		$evento = $this->Evento->findById($id);
		$this->set('evento',$evento);
		$this->set('menu','evento');
		/*$usuario = $this->Session->read('Usuario');
		$id_solicitante=0;
			if($this->Session->check('Usuario'))
			{
				if($usuario['perfil'] == 1 || $usuario['perfil'] == 3|| $usuario['perfil'] == 2)	
				{
					$sol = $this->Solicitante->findByUsuariosId($usuario['id']);
					if(count($sol)<1){		
				$id_solicitante=0;				
					}
					else
					$id_solicitante=$sol['Solicitante']['id'];
				}	
				else{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Usuarios','action'=>'listar'),null,true);	
				}
			}	*/
			
		//$this->set('id_solicitante',$id_solicitante);

		if(!empty($this->data)){

	 		$dataAsistencia = $this->data;
			foreach($dataAsistencia["Participante"] as $p)
			{
				
				$asistencia = $this->Asistencia->findById($p);
				$asistencia["Asistencia"]["estado"]=1;
				$this->Asistencia->save($asistencia["Asistencia"]);
			}
			$id=$dataAsistencia["Evento"]["id"];
			$this->redirect(array('controller'=>'Eventos','action'=>'verparticipantes?id='.$id),null,true);	
			/*
			if($dataEvento["Evento"]["solicitantes_id"]==0)
			{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);			
			}	
			$evento = $this->Evento->create();

			if($this->Evento->save($dataEvento["Evento"])){				
				$this->Session->setFlash('Se agregó el evento con éxito','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
			}*/
		}
	}







	function listaroca(){
		$this->verificarUsuario();
		$eventos = $this->Evento->find('all',array('conditions'=> array('OR'=>array(array('estado'=>'1'),array('estado'=>'2'),array('estado'=>'3')))));
		$this->set('eventos',$eventos);
		$this->set('menu','evento');
		$usuario = $this->Session->read('Usuario');
		$id_solicitante=0;
			if($this->Session->check('Usuario'))
			{
				if($usuario['perfil'] == 1 || $usuario['perfil'] == 3|| $usuario['perfil'] == 2)	
				{
					$sol = $this->Solicitante->findByUsuariosId($usuario['id']);
					if(count($sol)<1){		
				$id_solicitante=0;				
					}
					else
					$id_solicitante=$sol['Solicitante']['id'];
				}	
				else{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Usuarios','action'=>'listar'),null,true);	
				}
			}	
		$this->set('id_solicitante',$id_solicitante);

		if(!empty($this->data)){

	 		$dataEvento = $this->data;
			if($dataEvento["Evento"]["solicitantes_id"]==0)
			{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);			
			}	
			$evento = $this->Evento->create();

			if($this->Evento->save($dataEvento["Evento"])){				
				$this->Session->setFlash('Se agregó el evento con éxito','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
			}
		}
	}
	function listarsolicitante(){
		$this->verificarUsuario();
		$this->set('menu','evento');
		$usuario = $this->Session->read('Usuario');
		$id_solicitante=0;
			if($this->Session->check('Usuario'))
			{
				if($usuario['perfil'] == 1 || $usuario['perfil'] == 3)	
				{
					$sol = $this->Solicitante->findByUsuariosId($usuario['id']);
					if(count($sol)<1){		
				$id_solicitante=0;				
					}
					else
					$id_solicitante=$sol['Solicitante']['id'];
				}	
				else{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Usuarios','action'=>'listarsolicitante'),null,true);	
				}
			}	
		$eventos = $this->Evento->find('all',array('conditions'=>array('solicitantes_id'=>$id_solicitante)));
		$this->set('eventos',$eventos);
		$this->set('id_solicitante',$id_solicitante);

		if(!empty($this->data)){

	 		$dataEvento = $this->data;
			if($dataEvento["Evento"]["solicitantes_id"]==0)
			{
				$this->Session->setFlash('Usuario no autorizado para realizar esta operacion','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listarsolicitante'),null,true);			
			}	
			$evento = $this->Evento->create();

			if($this->Evento->save($dataEvento["Evento"])){				
				$this->Session->setFlash('Se agregó el evento con éxito','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listarsolicitante'),null,true);
			}
		}
	}

	function editar(){
		$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		}
		$evento = $this->Evento->findById($id);
		$this->set('evento',$evento);
		
		if(!empty($this->data)){
			$dataEvento = $this->data;	
			$id = $dataEvento["Evento"]["id"];
			
			if($this->Evento->save($dataEvento["Evento"])){
				$this->Session->setFlash('El evento ha sido actualizado','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
				
			}else{
				$this->Session->setFlash('El evento no se actualizó. Inténtelo de nuevo');
			}
		}
	}

	function aprobado(){
		$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		}
		$evento = $this->Evento->findById($id);
		$evento["Evento"]["estado"]=2;
			if($this->Evento->save($evento)){
				$this->Session->setFlash('El evento ha sido aprobado','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listaroca'),null,true);
				
			}else{
				$this->Session->setFlash('El evento no se actualizó. Inténtelo de nuevo');
			}
		//$this->set('evento',$evento);
		
		/*if(!empty($this->data)){
			$dataEvento = $this->data;	
			$id = $dataEvento["Evento"]["id"];
			
			if($this->Evento->save($dataEvento["Evento"])){
				$this->Session->setFlash('El evento ha sido actualizado','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
				
			}else{
				$this->Session->setFlash('El evento no se actualizó. Inténtelo de nuevo');
			}
		}*/
	}
	
	function rechazado(){
	$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		}
		$evento = $this->Evento->findById($id);
		$evento["Evento"]["estado"]=3;
			if($this->Evento->save($evento)){
				$this->Session->setFlash('El evento ha sido rechazado','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listaroca'),null,true);
				
			}else{
				$this->Session->setFlash('El evento no se actualizó. Inténtelo de nuevo');
			}
	}
	function publicado(){
	$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		}
		$evento = $this->Evento->findById($id);
		$evento["Evento"]["estado"]=4;
		$evento["Evento"]["fechapublicado"]=date('Y/m/d');
			if($this->Evento->save($evento)){
				$this->Session->setFlash('El evento ha sido publicado','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
				
			}else{
				$this->Session->setFlash('El evento no se actualizó. Inténtelo de nuevo');
			}
	}
	function terminado(){
	$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		}
		$evento = $this->Evento->findById($id);
		$evento["Evento"]["estado"]=5;
			if($this->Evento->save($evento)){
				$this->Session->setFlash('El evento ha sido terminado','success');
				$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
				
			}else{
				$this->Session->setFlash('El evento no se actualizó. Inténtelo de nuevo');
			}
	}
	
	function exposicion(){
		$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		$evento = $this->Evento->findById($id);
		$ambientes = $this->Ambiente->find('all');
		$this->set('evento',$evento);
		$this->set('ambientes',$ambientes);
		$this->set('menu','evento');
		}
		if(!empty($this->data)){
			$this->set('menu','evento');		
	 		$dataExposicion = $this->data["Exposicion"];
	 		$dataExposicion["estado"]=1;
			$this->Exposicion->create();
	 		$dataPonente = $this->data["Ponente"];
			$evento = $this->Evento->findById($dataExposicion["eventos_id"]);
			$this->set('evento',$evento);
			$this->Ponente->create();
				if($dataExposicion["otro"]==2){
					$this->set('dataPonente',$dataPonente);
					$this->set('dataExposicion',$dataExposicion);
					$ambiente_seleccionado = $this->Ambiente->findById($dataExposicion['ambiente']);
					$this->set('ambiente_seleccionado',$ambiente_seleccionado["Ambiente"]);
					$ambientes = $this->Ambiente->find('all');
					$this->set('ambientes',$ambientes);
					//buscar disponibilidad
					if($this->ConsultarDisponibilidad($dataExposicion["ambiente"],$dataExposicion["fecha"],$dataExposicion["horaini"],$dataExposicion["horafin"])){
					$this->set('libre','1');
					}
					else
					{
					$this->set('libre','0');	
					}
					
				}			
				elseif($this->Ponente->save($dataPonente)){
				$dataExposicion["ponentes_id"]=$this->Ponente->id;	
				$this->Exposicion->save($dataExposicion);	
				$dataseparacion["fecha"]=$dataExposicion["fecha"];
				$dataseparacion["horaini"]=$dataExposicion["horaini"];
				$dataseparacion["horafin"]=$dataExposicion["horafin"];
				$dataseparacion["estado"]=1;
				$dataseparacion["ambientes_id"]=$dataExposicion["ambientes_id"];
				$dataseparacion["exposicions_id"]=$this->Exposicion->id;
				$this->Separacion->create();
				$this->Separacion->save($dataseparacion);	
					
					if($dataExposicion["otro"]==1){
					$this->redirect(array('controller'=>'Eventos','action'=>'exposicion?id='.$dataExposicion["eventos_id"]),null,true);	
						
					}
					else
					{
					$this->Session->setFlash('Se agregó el evento con éxito','success');
					$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
					}	
				}
			
		}
	}

	function detalle(){
		$this->verificarUsuario();
		if(isset($this->params["url"]['id'])){
			$id = $this->params["url"]['id'];
		}
		$evento = $this->Evento->findById($id);
		$this->set('evento',$evento);
	}

	function ConsultarDisponibilidad($id,$fecha,$hora1,$hora2){
		$this->verificarUsuario();
		
		/*$sql="SELECT * FROM separacions AS Separacion where ambientes_id=".$id." AND fecha=".$fecha." AND ((horaini BETWEEN ".$hora1." AND ".$hora2.") OR (horafin BETWEEN ".$hora1." AND ".$hora2."))";
         $separacions=$this->Separacion->query($sql);*/
		    $separacions = $this->Separacion->find('all', array("conditions" => 
                                array(array('Separacion.ambientes_id'=>$id,'Separacion.fecha'=>$fecha,"OR" =>array('Separacion.horaini BETWEEN ? AND ?' => array($hora1,$hora2),
                                                   'Separacion.horafin BETWEEN ? AND ?' => array($hora1,$hora2))))
                ));
				var_dump($separacions);
				if(count($separacions)>0)
					return false;
				else 
					return true;
	}
/*	function diferenciaminutos($hora1,$hora2)
{
 	$separar[1]=explode(':',$hora1); 
    $separar[2]=explode(':',$hora2); 
$total_minutos_trasncurridos[1] = ($separar[1][0]*60)+$separar[1][1]; 
$total_minutos_trasncurridos[2] = ($separar[2][0]*60)+$separar[2][1]; 
$total = $total_minutos_trasncurridos[1]-$total_minutos_trasncurridos[2]; 
return($total); 

}*/

	function borrar(){
		$this->verificarUsuario();
		$id = $this->params["url"]['id'];
		$u = $this->Session->read("Usuario");
		if($u['perfil']==2){
			$this->layout = "oca";
			$this->Session->setFlash('No tiene permiso para eliminar este Evento','success');
			$this->redirect(array('controller'=>'Eventos','action'=>'listaroca'),null,true);	
		}
		elseif($u['perfil']==3){
			$this->layout = "solicitante";
			$evento=$this->Evento->findById($id);
			if($evento["Evento"]["estado"]==1||$evento["Evento"]["estado"]==3)
			{
			$this->Evento->delete($id);
			$this->Session->setFlash('Se eliminó el evento con exito','success');
			$this->redirect(array('controller'=>'Eventos','action'=>'listarsolicitante'),null,true);				
			}
			else
			{
			$this->Session->setFlash('No puede eliminar un evento Publicado','success');
			$this->redirect(array('controller'=>'Eventos','action'=>'listarsolicitante'),null,true);					
			}
		
		}
		if($this->Evento->delete($id)){
			$this->Session->setFlash('Se eliminó el evento con exito','success');
			$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
		}else{
			$this->Session->setFlash('No se pudo eliminar el evento. Inténtelo nuevamente','notice');
			$this->redirect(array('controller'=>'Eventos','action'=>'listar'),null,true);
		}
	}
	function verificarUsuario(){
		$u = $this->Session->read("Usuario");
		if($u['perfil']==2){
			$this->layout = "oca";
		}
		elseif($u['perfil']==3){
			$this->layout = "solicitante";
		}
		
		//Verificamos que exista alguna sesion abierta
		if($this->Session->check("Usuario") == false){
			$this->Session->setFlash('Debe estar logueado', 'notice');                        
			$this->redirect(array('controller'=>'Usuarios','action'=>'index'),null,true);
		}
	}	
}
?>